/**
 * 
 */
package ar.utn.frgp.banco.front.action.reportes;

import java.util.Date;
import java.util.List;

import ar.utn.frgp.banco.entity.Cuenta;
import ar.utn.frgp.banco.entity.Movimientos;
import ar.utn.frgp.banco.exceptions.PersonalisedException;
import ar.utn.frgp.banco.front.action.EBAbstractAction;
import ar.utn.frgp.banco.service.GestionCuentasService;
import ar.utn.frgp.banco.service.ReportesService;

/**
 * @author PUSDERKIS
 *
 */
public class ReporteDepositosYExtraccionesInitAction extends EBAbstractAction {

	/**
	 * 
	 */
	private static final long serialVersionUID = 8668198886708881410L;
	
	private Long idCuenta;
	
	private List<Cuenta> cuentas;
	
	private List<Movimientos> movimientos;
	
	private Date fechaIni;
	
	private Date fechaFin;
	
	/**
	 * @return the fechaIni
	 */
	public Date getFechaIni() {
		return fechaIni;
	}

	/**
	 * @param fechaIni the fechaIni to set
	 */
	public void setFechaIni(Date fechaIni) {
		this.fechaIni = fechaIni;
	}

	/**
	 * @return the fechaFin
	 */
	public Date getFechaFin() {
		return fechaFin;
	}

	/**
	 * @param fechaFin the fechaFin to set
	 */
	public void setFechaFin(Date fechaFin) {
		this.fechaFin = fechaFin;
	}

	private GestionCuentasService gestionCuentasService;
	private ReportesService reportesService;
	
	/**
	 * @see ar.utn.frgp.banco.front.action.EBAbstractAction#execute()
	 */
	@Override
	public String execute() throws PersonalisedException {
		if (cuentas == null){
			cuentas = gestionCuentasService.obteneCuentas(getLoggedUser().getDni());
		}
		
		if (idCuenta != null){
			movimientos = reportesService.depositosYExtraccionesEntreFechas(idCuenta, fechaIni, fechaFin); 
		}
		
		return SUCCESS;
	}

	/**
	 * @return the idCuenta
	 */
	public Long getIdCuenta() {
		return idCuenta;
	}

	/**
	 * @param idCuenta the idCuenta to set
	 */
	public void setIdCuenta(Long idCuenta) {
		this.idCuenta = idCuenta;
	}

	/**
	 * @return the cuentas
	 */
	public List<Cuenta> getCuentas() {
		return cuentas;
	}

	/**
	 * @param cuentas the cuentas to set
	 */
	public void setCuentas(List<Cuenta> cuentas) {
		this.cuentas = cuentas;
	}

	/**
	 * @param gestionCuentasService the gestionCuentasService to set
	 */
	public void setGestionCuentasService(GestionCuentasService gestionCuentasService) {
		this.gestionCuentasService = gestionCuentasService;
	}

	/**
	 * @return the movimientos
	 */
	public List<Movimientos> getMovimientos() {
		return movimientos;
	}

	/**
	 * @param movimientos the movimientos to set
	 */
	public void setMovimientos(List<Movimientos> movimientos) {
		this.movimientos = movimientos;
	}

	/**
	 * @param reportesService the reportesService to set
	 */
	public void setReportesService(ReportesService reportesService) {
		this.reportesService = reportesService;
	}


}
